Top 10k strings from Supercode (1984)(CP Software)[a].tzx
in <root> / bin / z80 / software / Sinclair Spectrum Collection TOSEC.exe / Sinclair ZX Spectrum - Utilities & Educational / Sinclair ZX Spectrum - Utilities & Educational - [TZX] (TOSEC-v2007-01-01) /
Back to the directory listing
7 ;"Routine in ROM"; 2 A,B,C$,DUR: 2 " If you choose 1 tool 1 existing line no:,the next valid line no: is used.Cal -culated GOTOs etc are highlit.": 1 at any position on the screen: ie, to find the CODE of the character printed 1 \##N#F#"]\" 1 [}\r#s#N#F# 1 ZX SPECTRUM MACHINE CODE TOOLKIT 1 X/Q/S/R/I/C/N/D 1 This is Line #";Z 1 The Recording was fine! 1 TO SEE HOW THIS WAS DONE, EXIT & EXAMINE LINES 9400 TO 9430 1 Start address: 1 SUPERSOFT SYSTEMS 1 SUPERCODE2 1 SUPERCODE \v(#kiO 1 SAVE '";C$( 1 S U P E R C O D E 1 Routine Starts at ";A 1 Routine Length is ";B;" bytes 1 Routine Ends at ";A+B-1 1 ROUTINE NO:/ ENTER TO SCROLL 1 ROUTINE NO: ? 1 ROUTINE ";C$'" IS NOW CALLED 1 RANDOMIZE USR 3190 1 RANDOMIZE USR ";A 1 R"E\*S\###" 1 Press a key to turn the page 1 Press S to SAVE, Q to QUIT 1 Press Q to QUIT 1 Press ENTER to Expand the Whole Program 1 PRINT;: RANDOMISE USR 60222 1 PRESS THE APPROPRIATE KEY 1 PRESS ANY KEY TO CONTINUE 1 POKE NUMBERS 1 No. STATEMENTS : 1 No. OF EXTRA BYTES::}\_:~\W: 1 No. LINES : 1 No. Bytes: 1 Length of Program Only:! 1 LINE NO:NOW RENUMBER PROGRAM 1 LIKE AN EXAMPLE - Y/N ? 1 L);"'CODE";A;",";B 1 Input Routine Number, or 'I' if you want the index again. Enter 'D' for a demonstration. 1 INTRODUCTION 1 I N D E X (CONT) 1 HIRES SCROLL-UPD 1 Freddy A Vachha & Vic B Rumsey 1 First Byte: 1 FROM LINE NO:TO LINE NO:AFTER LINE NO:NOW RENUMBER PROGRAM 1 ERROR CODE: "; 1 ENLARGE REM 1 BLOCK COPY 1 Auto-start Line No: 1 Array Name: 1 ;C$;" CODE ";A;",";B: 1 ;"top left hand corner of the box" 1 ;"You can scroll attributes too by using this routine & then No: 37 - 40, after defining an appropriate box & setting the Attr Value to 63." 1 ;"WRAP-AROUND POKE ";A+16 1 ;"WRAP-AROUND POKE "; 1 ;"WRAP AROUND POKE ";A+13 1 ;"To save this routine, use"; 1 ;"To renumber lines starting with S using an interval I, first POKE 59580,I: POKE 59582,S-256* INT(S/256):POKE59583,INT(S/256) All GOTOs,GOSUBs,LISTs,LLISTs, RESTOREs,SAVE...LINEs & #Ns are renumbered(except for decimal/ calculated arguments & REMs).If the arg 1 ;"To help with PRINTing/PLOTting, this routine prints a BRIGHT ON /OFF checkerboard on the screen" 1 ;"To delete all lines from a to b POKE 23728, a - 256*INT(a/256) POKE 23729, INT(a/256) RANDOMISE b": 1 ;"To call this routine, use"; 1 ;"This routine will switch all flashing squares to steady & vice versa. This is hence very different from routines 32/33." 1 ;"This routine will switch all bright squares to normal & vice versa. This is hence very different from routines 34/35." 1 ;"This routine waits till a key (whose CODE will be put in L)is pressed.": 1 ;"This routine undoes the effect of #98, to allow lines of a CONFUSEd program to be EDITed/ altered.": 1 ;"This routine swops all chara- cters of a given CODE with all characters of a 2nd given CODE. POKE 63903, Old CODE POKE 63905, New CODE" 1 ;"This routine simulates a power- off: ie, it not only does NEW but also CLEARs RAMTOP to its original value, clears the entire memory & resets UDGs & System VARs.": 1 ;"This routine shortens & speeds up your program by deleting all REM statements in it. Also see #41,#82,#90 & #100.": 1 ;"This routine replays what #77 recorded. It is probably best to use your cassette-recorder (MIC socket) to amplify the sound.": 1 ;"This routine replaces numbers in the program by VAL String, which saves space but reduces speed. 0 is replaced by NOT PI. Also see #41,#64,#82,#90": 1 ;"This routine prints the address of the first character in the line the cursor points to.": 1 ;"This routine prints out both the no: of lines & statements in the program. If you try this out, use GOTO 9001 to restart." 1 ;"This routine prints out a full analysis of memory contents, starting at the address whose less & more significant bytes (see #61) have been POKEd into 62866 & 62867 respectively.": 1 ;"This routine places a random # pair in the System Variable SEED ( PEEK 23670 & 23671 )." ; 1 ;"This routine permits instant conversion of a number from 0 - 65535 to its 2-byte equivalent. To convert X into its 2-byte equivalent, enter RANDOMISE X. 1 ;"This routine lists all (1) Numeric variables (2) String variables (3) Numeric Arrays (4) String Arrays (5) FOR..NEXT control variables" 1 ;"This routine inserts a given number into a block of memory. POKE 63796, No: of bytes POKE 63798 (less sig) & 63799 (more sig), Start Address POKE 63801, No: to be inserted" 1 ;"This routine expands programs so that there is exactly one statement per line (except in IF..THEN lines)": 1 ;"This routine enables you to determine the 1 ;"This routine deletes hidden colour items, thus saving space Also see #64,#82 & #100": 1 ;"This routine decodes tapeheader information & prints out a full analysis (name, address, type, length & auto-start details.": 1 ;"This routine converts hex no:s to their decimal equivalents. It clears the screen & prompts 'H:' - now ENTER the hex no:. Only the last 4 hex digits will be converted. The routine auto- repeats. Enter 'Q' to quit to BASIC.": 1 ;"This routine converts decimal no:s from 0 to 65535 to hex. It clears the screen & prompts 'D:' - now ENTER the dec no:. Error message 6 results if the no: was out of range. The rou- tine autorepeats. Enter 'Q' to quit to BASIC.": 1 ;"This routine contracts programs into the minimum no: of lines, by combining lines wherever it is logically possible. Speed is also increased. See also #41, #64, #90 & #100": 1 ;"This routine allows hex input into RAM.POKE the less/more sig (see #61) bytes of the first address to be changed into the system-var DEFADD (23563/4). POKE 65360/61 with the start address of routine #63(Hex-Dec) which must also be in memory.": 1 ;"This routine allows a block of lines to be relocated within a BASIC program.In order to shift lines 4200 till 6745 so they appear after2200 in the listing respond 4200,6745 & 2200 to the auto-prompts.The new lines will all have number 0.Now call #60 to renumber & #57 to delete the old lines. Fully errorproofed.": 1 ;"The routine prints the byte space available"; 1 ;"The Toolkit contains 1 ;"THIS IS AN EXAMPLE OF THE NEW CHARACTER SET.POKE 23606/7 WITH THE LESS/MORE SIGNIFICANT BYTES OF THE START ADDRESS LESS 256 - CURRENTLY 0 & 223. TO RETURN TO THE NORMAL SET,POKE 23607,60.": 1 ;"SCROLL-OFF POKE ";A+16 1 ;"SCROLL-OFF POKE "; 1 ;"SCROLL-OFF POKE ";A+13 1 ;"Routines 94 to 97 change the case (upper/lower)of strings or of the entire listing ( except strings),as specified.Note that an effective way of switching case from within programs is to POKE 23658,0 (LO) or 8(HI).": 1 ;"Routine in ROM": 1 ;"PRINT AT co-ordinates of the"; 1 ;"POKE 64884, Overall Paper Col" 1 ;"POKE 64859, Overall Ink Colour" 1 ;"POKE 64829, Character Code POKE 64831, Box height POKE 64834, Box Width POKE 64832 & POKE 64835 with the PRINT AT co-ordinates for the top-left hand corner of the box." 1 ;"POKE 64682, Duration POKE 64693, Frequency 1 POKE 64702, Frequency 2" 1 ;"POKE 64648, Frequency POKE 64649, Span POKE 64651, Duration POKE 64670, 28(UP) or 29(DOWN)" 1 ;"POKE 63011, Pitch Decrement POKE 63012, Number of notes POKE 63014 & 63015, Pitch (less/more sig) POKE 63017 & 63018, Duration in ms (less/more sig)" 1 ;"POKE 63001 & 63002 with the Pitch value (less/more sig) POKE 63004 & 63005 with the Duration in ms (less/more sig)" 1 ;"POKE 60006, Duration (1-127) POKE 60020, Colours (0-7) POKE 60029, Line Space (1-255)" 1 ;"POKE ";A+7 1 ;"POKE ";A+6 1 ;"POKE ";A+4 1 ;"POKE ";A+2 1 ;"POKE ";A+1 1 ;"No GOSUBs or GOTOs are changed. If L is the first Line to be renumbered, & I the Interval POKE 64711, I - 256*INT(I/256) POKE 64712, INT(I/256) POKE 64714, L - 256*INT(L/256) POKE 64715, INT(L/256)": 1 ;"Move the cursor to the required line & then call this routine. You will be in EDIT mode, but with the cursor at the END of the line.": 1 ;"Make the following POKEs:- INK (63732) PAPER (63738) FLASH (63744) BRIGHT(63750) INVERSE(63756) OVER (63762) AT (63768,63771)CHR$ (63774)" 1 ;"Less Sig More Sig": 1 ;"In order to scroll a table of data > 22 lines long, without stopping, include the command POKE 23692,255 within the loop that is generating the lines.": 1 ;"In order to print lists or text using all the 24 lines on the screen, include POKE 23659,0 before each PRINT instruction. At the end, POKE 23659,2. Use PAUSE 0 to prevent the Scroll command corrupting the screen. PRINT #0 & PRINT #1 commands are also usable.": 1 ;"In order to make the first line of your program virtually non- deletable ( by making it #0 ) POKE 23755,0: POKE 23756,0": 1 ;"INVERSE SCRL POKE ";A+13 1 ;"Having connected the EAR socket of the cassette-recorder to the Specrum, start PLAYing the tape ( Voice is best. Let Vol=max ) Enter CLEAR 32767:RANDOMISE USR 65290. All memory from 32768 to 65K is used. To replay, call routine 78.": 1 ;"Follow the prompts to expand a REM statement (to accommodate code) anywhere in the program, by up to 9999 bytes": 1 ;"F.VACHHA V.RUMSEY": 1 ;"Each screen uses 6912 bytes, & is stored above RAMTOP. It may be necessary to CLEAR a new, lower RAMTOP.To store a screen from X-6911 to X, you must POKE ";A+1 1 ;"Draw multipointed-stars & rings by first plotting a point near the middle of the screen & then using DRAW X,Y,N where X & Y have magnitudes from 10 to 60 & N lies between 8000 & 9999. You may need to experiment." 1 ;"Draw any closed figure on the screen, then PLOT a point lying INSIDE it. POKE 59293 with the required Attribute value, & now call this routine." 1 ;"Corrupts the listing without affecting program execution: attempting to EDIT/alter lines could be fatal ( v.useful for program protection - also see #61 & #80.": 1 ;"Call this routine at the start of your program, say by having as LINE 1, '1 RANDOMISE USR 60899'. Now if an error of the type D:BREAK,H:STOP in INPUT or L:BREAK into program occurs the program will not stop but will jump to the line number whose 2 byte equivalent is POKEd into 60952(lo) & 60953(hi).This line is initially 9495.": 1 ;"Call this routine at the start of your program, say by having as LINE 1, '1 RANDOMISE USR 60826'. Now if an error occurs, (other than types 0:OK,8:END or 9:STOP) the program will not stop but will jump to the line number whose 2-byte equivalent is POKEd into 60878(lo) & 60879 (hi)...initially 9495. For the error code, PEEK 23681.": 1 ;"By combining this routine with No:s 37-40, joint scrolling of attributes can be done. Define a suitable box, use an Attr Val of 63 & call the Attr Scroll routine(s) once for every 8 calls of this routine." 1 ;"By POKEing 23606 & 23607 with different numbers, a corrupted character set is obtained. To normalise, POKE 23606,0: POKE 23607,60": 1 ;"1)Introduce as line#1 a REM statement:then POKE 23755,100 The program will work but not list,until you POKE 23755,0 2)POKE 23636,150. To return to normal, POKE 23636,92 3)Use the CONFUSE routine (#98) 4)Call #65/66 to disable BREAKs 5)Use CHR$ SCRAMBLE routine #59 to make the listing unreadable -return to normal for PRINTing": 1 ;"----> "; 1 ;", X - 256*INT(X/256)"; 1 ;", New Attribute Val"; 1 ;", INT(X/256)": 1 ;", Box width"; 1 ;", Box height" 1 ;" & POKE ";A+3 1 ;" If you have noted important details ( address, length," 1 ;" " 1 7,13;: LET Z= 1 7,13, you must enter PRINT 1 60039 Now Z is the required code.": 1 57344----(8118)----65461 1 23670 & 23671 now hold the less significant & more signi- ficant byte values respectively": 1 ,"VARIABLES SEARCH/LIST",1 1 ,"UNI-NOTE SOUND-GEN",5 1 ,"UNI-BEEP SIMULATOR",20 1 ,"UNCONFUSE LISTING",1 1 ,"U-CASE STRINGS",1 1 ,"U-CASE PROGRAM",1 1 ,"TAPE HEADER READER",1 1 ,"SUPER-RENUMBER",1 1 ,"STAR/TORUS DRAW",1 1 ,"SHUTTER-SCROLL RIGHT",10 1 ,"SHUTTER-SCROLL LEFT",10 1 ,"SCREEN-PRINT",1 1 ,"SCREEN STORE",1 1 ,"SCREEN SEARCH",1 1 ,"SCREEN OVERPRINT",1 1 ,"SCREEN INVERT",1 1 ,"SCREEN GRID",1 1 ,"SCREEN FILL",1 1 ,"SCREEN EXCHANGE",1 1 ,"SCIFI CHARACTER SET",1 1 ,"RIPPLE-SCROLL RIGHT",255 1 ,"RIPPLE-SCROLL LEFT",255 1 ,"REPLAY SOUND",0 1 ,"REMKILL CONDENSER",1 1 ,"RECORD SOUND",0 1 ,"RANDOM NUMBER GENERATOR",20 1 ,"PROTECT PROGRAM",1 1 ,"PAPER CHANGE",1 1 ,"PAINT-FILL",1 1 ,"ON ERROR GOTO",1 1 ,"ON BREAK GOTO",1 1 ,"OBLIQUE SCROLL-OFF",1625 1 ,"NON-DELETABLE LINES",1 1 ,"MULTI-BEEP SIMULATOR",20 1 ,"MONOCHROME PROGRAM",1 1 ,"MEMORY AVAILABLE",1 1 ,"LORES TOP 2/3 SCR-RGHT",255 1 ,"LORES TOP 2/3 SCR-LEFT",255 1 ,"LORES TOP 1/3 SCR-RGHT",255 1 ,"LORES TOP 1/3 SCR-LEFT",255 1 ,"LORES SCROLL-UP",24 1 ,"LORES SCROLL-LEFT",33 1 ,"LORES SCROLL RIGHT",33 1 ,"LORES R-DIAG SCROLL",22 1 ,"LORES MID 1/3 SCR-RGHT",255 1 ,"LORES MID 1/3 SCR-LEFT",255 1 ,"LORES LOW 2/3 SCR-RGHT",255 1 ,"LORES LOW 2/3 SCR-LEFT",255 1 ,"LORES LOW 1/3 SCR-RGHT",255 1 ,"LORES LOW 1/3 SCR-LEFT",255 1 ,"LORES L-DIAG SCROLL",22 1 ,"LINE RENUMBER",1 1 ,"LINE ADDRESS",1 1 ,"L-CASE STRINGS",1 1 ,"L-CASE PROGRAM",1 1 ,"INK CHANGE",1 1 ,"HIRES SW-DIAG SCROLL",190 1 ,"HIRES SE-DIAG SCROLL",190 1 ,"HIRES SCROLL-UP",175 1 ,"HIRES SCROLL-RIGHT",255 1 ,"HIRES SCROLL-LEFT",255 1 ,"HIRES SCROLL-DOWN",200 1 ,"HIRES NW-DIAG SCROLL",176 1 ,"HIRES NE-DIAG SCROLL",176 1 ,"HEX->DEC CONVERTER",1 1 ,"HEX LOADER",1 1 ,"FREE-SCROLLER",1 1 ,"FLASH SWITCH",1 1 ,"FLASH ON",1 1 ,"FLASH OFF",1 1 ,"EXPAND REM",1 1 ,"EXPAND PROGRAM",1 1 ,"DUAL-NOTE SOUND-GEN",10 1 ,"DEC->HEX CONVERTER",1 1 ,"CONTRACT PROGRAM",1 1 ,"CONFUSE LISTING",1 1 ,"COMPRESS NUMBERS",1 1 ,"CLEAR ALL ",1 1 ,"CHR$ SCRAMBLE",1 1 ,"BRIGHT SWITCH",1 1 ,"BRIGHT ON",1 1 ,"BRIGHT OFF",1 1 ,"BORDER EFFECTS",10 1 ,"BLOCK MEMORY INSERT",1 1 ,"BLOCK LINE DELETE",1 1 ,"BLOCK LINE COPY",1 1 ,"AWAIT KEYPRESS",1 1 ,"ATTRIBUTE SCR-UP",40 1 ,"ATTRIBUTE SCR-RIGHT",200 1 ,"ATTRIBUTE SCR-LEFT",40 1 ,"ATTRIBUTE SCR-DOWN",40 1 ,"ATTRIBUTE FILL",1 1 ,"APPEND STATEMENT",1 1 ,"ANALYSE PROGRAM",1 1 ,"ANALYSE MEMORY",1 1 ,"ALL-RIGHT SCROLL",32 1 ,"ALL-LEFT SCROLL",32 1 ,"24-LINE PRINTING",1 1 ,"2 BYTE CONVERTER",1 1 , use a fresh cassette - the routine is saved under the name "; 1 , use GOTO 9001(not RUN)to restart the program." 1 +A;", 26"; 1 +-*]\"[\*Q\ 1 ++F+N+++"]\*S\~ 1 ++F+N+++"]\ 1 *]\###q#p##"]\ 1 *S\##"]\^#V 1 *SUPERCODE 1 '" (1)At 10% Speed, using PAUSE"'" (2)At Full Speed" 1 ' (repeat)" 1 ' (number)": 1 ' (index)" 1 ' (exit)You will then have the option of SAVEing the routine on tape." 1 ' (continue)" 1 #T]##N#F#~ 1 "programs.This BASIC program letsyou list,test,customise,relocateSAVE & VERIFY routines easily - but the routines will work just as well if the program is absent" 1 "any POKEs that are necessary to tailormake the program for your specific needs) press ' 1 "This routine has now been saved.Replay it NOW to VERIFY. If the recording is bad, you will be automatically returned to the SAVE option via the Error-trap routine." 1 "The save MUST then be verified." 1 "The code is from 57344 to 65461:it overwrites the first 12 UDGs.RAMTOP has been cleared to 57340" 1 "The Index follows- input the no:of a routine for its description(incl all addresses & POKEs)& anoptional example.Get to know theMenu options ( 1 "SUPERCODE2" 1 "#";N;": "; 1 " To access the next routine in the Index, press ' 1 " To access a routine whose no: you know, press ' 1 " The routines run hundreds of times faster than BASIC,& can becustomised easily. Do enjoy yoursuperb Z80 MachineCode Library!" 1 " Keep a written record of the name, address & length of this routine, as well as of all the relevant POKEs. For details on relocation, refer to the manual." 1 " If you would like to have the details of this routine again, press ' 1 " If you wish to return to the Index, press ' 1 machinecode routines which you can call(using RANDOMIZE/PRINT USR) bothdirectly & from within your own" 1 ROUTINE # 65 HAS PREVENTED YOU FROM BREAKING INTO THIS PROGRAM 1 POKE 23607, 223 1 - Press any key to continue 1